Linux サーバを EC2 に移行する前に、データ転送量(アウトバウンド)を把握する方法について教えてください
困っていた内容
Linux サーバを EC2 に移行したいです。
利用中の Linux サーバにはリソース監視ツールを導入していないためデータ転送量を収集していません。
AWS はインターネットに向けたアウトバウンドはデータ転送量に応じて課金されることは知っていますので、
事前に目安となるデータ転送量を把握しておきたいです。
どう対応すればいいの?
ネットワークインターフェイスごとの送受信の統計情報を記録している /proc/net/dev
にて転送量を確認できます。
/proc/net/dev
は Linux カーネルが提供する仮想ファイルシステム(擬似ファイルシステム)である procfs に存在するファイルの1つです。
cat /proc/net/dev
Inter-|Receive |Transmit face |bytes packets errs drop fifo frame compressed multicast| bytes packets errs drop fifo colls carrier compressed lo: 908188 5596 0 0 0 0 0 0| 908188 5596 0 0 0 0 0 0 ppp0:15475140 20721 410 0 0 410 0 0| 1375103 17405 0 0 0 0 0 0 eth0: 614530 7085 0 0 0 0 0 1| 1703981 5535 0 0 0 3 0 0
eth0
インターフェイスを経由した送信量は Transmit
の bytes
を確認します。
累積値となっていますので、計測したい時間あたりの増分がデータ転送量となります。
値はサーバの再起動ごとに0にリセットされます。
1日あたりの送信量 = 「24 時間後の Transmit の bytes」 - 「現時刻の Transmit の bytes」
また、集計が少し煩雑となりますが sysstat パッケージの sar でも確認できます。
sar はデフォルトで 10 分間隔で性能指標をログ形式で記録する設定となっており、ネットワーク使用状況も取得しています。
/etc/cron.d/sysstat
(Amazon Linux 2)
デフォルトで 28 日分のデータが保持されていますので、過去にさかのぼって確認ができます。
/etc/sysconfig/sysstat
(Amazon Linux 2)
該当箇所は txkB/s
(Total number of kilobytes transmitted per second.)となります。
ただし、出力値が 1 秒あたりの平均転送量となっていますので、個々に 600 秒を乗算した上で、合算する必要があります。
sar -n DEV -s 12:20:00 -e 01:10:00 -f /var/log/sa/sa24
(日ごとにファイルが生成されている)
12:20:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 12:30:01 AM eth0 0.60 0.45 0.04 0.05 0.00 0.00 0.00 12:40:01 AM eth0 0.19 0.20 0.01 0.02 0.00 0.00 0.00 12:50:01 AM eth0 4.29 0.62 5.55 0.05 0.00 0.00 0.00 01:00:01 AM eth0 0.13 0.14 0.01 0.01 0.00 0.00 0.00
確認してみた
東京リージョン(ap-northeast-1)に作成した EC2 から、バージニア北部(us-east-1)に作成した S3 バケットに 10 MB のファイルを 3 回に分けて計 6 回アップロードしてみました。
日時 | アップロード回数 |
---|---|
Jun 24 04:02 | 1 (計 10 MB) |
Jun 24 04:12 | 2 (計 20 MB) |
Jun 24 04:23 | 3 (計 30 MB) |
結果、下記4点の一致が確認できました。
- 「1」
/proc/net/dev
のTransmit
のbytes
- 「2」 sar コマンドの
txkB/s
(Total number of kilobytes transmitted per second.) - 「3」 EC2 の NetworkOut メトリクス (CloudWatch)
- 「4」 AWS Cost Explorer
「1」
Mon Jun 24 04:02:00 UTC 2024 Inter-|Transmit face |bytes packets errs drop fifo colls carrier compressed eth0: 636382 9502 0 0 0 0 0 0 ↓ eth0: 11584930 17051 0 0 0 0 0 0 Mon Jun 24 04:12:12 UTC 2024 Inter-|Transmit face |bytes packets errs drop fifo colls carrier compressed eth0: 11603062 17200 0 0 0 0 0 0 ↓ eth0: 33563482 32208 0 0 0 0 0 0 Mon Jun 24 04:23:18 UTC 2024 Inter-|Transmit face |bytes packets errs drop fifo colls carrier compressed eth0: 33572665 32316 0 0 0 0 0 0 ↓ eth0: 66482123 54878 0 0 0 0 0 0
「2」
03:20:01 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 03:30:01 AM eth0 0.16 0.17 0.01 0.01 0.00 0.00 0.00 03:40:01 AM eth0 0.28 0.27 0.04 0.03 0.00 0.00 0.00 03:50:01 AM eth0 0.28 0.28 0.02 0.03 0.00 0.00 0.00 04:00:01 AM eth0 0.14 0.15 0.01 0.01 0.00 0.00 0.00 04:10:01 AM eth0 5.30 12.92 0.30 17.86 0.00 0.00 0.00 04:20:01 AM eth0 6.96 25.17 0.38 35.75 0.00 0.00 0.00 04:30:01 AM eth0 10.64 37.83 0.57 53.59 0.00 0.00 0.00
「3」 「4」
料金について
1 か月あたり 100 GB のインターネットへのデータ転送 (アウトバウンド) を無料で利用できます。
2024 年 6 月時点では、100 GB を超えた場合は下記となります。